package com.doit.sparksql.day01

import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.{DataFrame, SparkSession}

/**
 * @DATE 2022/1/13/9:05
 * @Author MDK
 * @Version 2021.2.2
 *    使用sparkSQL变成处理结构化数据  处理每种性别的平均年龄
 * */
object SQL {
  Logger.getLogger("org").setLevel(Level.ERROR)
  def main(args: Array[String]): Unit = {
    //sparkcore 和sparksql 的统一程序入口
    val spark = SparkSession
      .builder()
      .appName("sql01")
      .master("local[*]")
      .getOrCreate()
    //加载结构化数据  提示加载了表头字段
    val df: DataFrame = spark.read.option("header",true).csv("sql_data/csv/a.csv")
    //注册表结构
    df.createTempView("t")

    //查询语句展示结果
    spark.sql(
      """
        |select
        |*
        |from
        |t
        |""".stripMargin).show()

    /* 展示结果
    * | id|name|age|gender|
      +---+----+---+------+
      |  1| zss| 23|     F|
      |  2| zss| 34|     M|
      |  3| zss| 56|     M|
      |  4| zss| 47|     F|
      |  5| zss| 15|     F|
      |  6| zss| 26|     M|
      +---+----+---+------+
    *
    *
    * */
    spark.sql(
      """
        |select
        |gender,
        |avg (cast (age as int)) as avg_age
        |from
        |t
        |group by
        |gender
        |""".stripMargin).show()
/**
 * +------+------------------+
  |gender|           avg_age|
  +------+------------------+
  |     F|28.333333333333332|
  |     M|38.666666666666664|
  +------+------------------+
 *
 * */
    spark.close()
  }
}
